#include<bits/stdc++.h>
using namespace std;
#define reg register
#define pow2(x) (1<<(x))
#define getc() getchar_unlocked()
#define putc(c) putchar_unlocked(c)
typedef long long lli;
inline int read(){reg int x=0;reg bool f=0;reg char c=getc();while(c<'0'||c>'9'){f=(c=='-');c=getc();}while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+(c^48);c=getc();}return f?-x:x;}
inline void write(reg int x){if(x==-2147483648){putc('-'),putc('2'),putc('1'),putc('4'),putc('7'),putc('4'),putc('8'),putc('3'),putc('6'),putc('4'),putc('8');return;}if(x<0){x=-x;putc('-');}static char i32_out[15];reg int top=0;do{i32_out[++top]=(x%10)^48;x/=10;}while(x);while(top){putc(i32_out[top--]);}}
int n,a[100005];
priority_queue<int,vector<int>,greater<int>> q;
int main(){
    freopen("duel.in","r",stdin);
    freopen("duel.out","w",stdout);
    n=read();
    for(reg int i=1;i<=n;i++){
        a[i]=read();
    }
    sort(a+1,a+n+1);
    reg int ans=n;
    q.emplace(a[1]);
    for(reg int i=2;i<=n;i++){
        if(!q.empty()){
            if(q.top()<a[i]){
                q.pop();
                --ans;
            }
        }
        q.emplace(a[i]);
    }
    write(ans);
    return 0;
}
